#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

// ll gcd(ll a,ll b){
// 	if(a%b==0)return b;
// 	else return gcd(b,a%b);
// }

// void solve(){
//     ll n,k;
//     cin>>n>>k;
//     vector<int> a(n),b(n),c(n),d(n);
//     for(int i=0;i<n;i++)cin>>c[i],a[i]=c[i];
//     for(int i=0;i<n;i++)cin>>d[i],b[i]=d[i];
//     if(k==1){
//     	for(int i=0;i<n;i++){
//     		if(a[i]!=b[i]){
//     			cout<<"NO"<<'\n';
//     			return;
//     		}
//     	}
//     }
//     sort(a.begin(),a.end());
// 	sort(b.begin(),b.end());
// 	for(int i=0;i<n;i++){
// 		if(a[i]!=b[i]){
// 			cout<<"NO"<<'\n';
// 			return;
// 		}
// 	}
// 	if(n==2){
// 		cout<<"YES"<<'\n';
// 		return;
// 	}
// 	multiset<int> mt1,mt2;
// 	int cnt1=0,cnt2;
// 	for(int i=0;i<n;i++){
// 		mt1.insert(c[i]);
// 		mt2.insert(d[i]);
// 		cnt1+=mt1.size()-distance(mt1.begin(),mt1.upper_bound(c[i]));
// 		cnt2+=mt2.size()-distance(mt2.begin(),mt2.upper_bound(d[i]));
// 	}
// 	cout<<abs(cnt1-cnt2)<<'\n';
// 	if(abs(cnt1-cnt2)%(k-1)==0){
// 		cout<<"YES"<<'\n';
// 	}else{
// 		cout<<"NO"<<'\n';
// 	}
// }

// void solve(){
// 	ll n,k;
//     cin>>n>>k;
//     vector<int> a(n),b(n),posa(n),posb(n);
//     for(int i=0;i<n;i++)cin>>a[i],posa[a[i]]=i;
//     for(int i=0;i<n;i++)cin>>b[i],posb[b[i]]=i;
//     if(k==1){
//     	for(int i=0;i<n;i++){
//     		if(a[i]!=b[i]){
//     			cout<<"NO"<<'\n';
//     			return;
//     		}
//     	}
//     }
//     sort(a.begin(),a.end());
// 	sort(b.begin(),b.end());
// 	for(int i=0;i<n;i++){
// 		if(a[i]!=b[i]){
// 			cout<<"NO"<<'\n';
// 			return;
// 		}
// 	}
// 	if(n==2){
// 		cout<<"YES"<<'\n';
// 		return;
// 	}
// 	ll cnt=0;
// 	for(int i=0;i<n;i++){
// 		cnt+=
// 	}
// }

struct node{
	ll val,pos;

	bool const operator<(const node& o)const{
		return this->val<o.val;
	}
};

void solve(){
	ll n,k;
	cin>>n>>k;
	vector<node> a(n),b(n);
	for(int i=0;i<n;i++){
		cin>>a[i].val;
		a[i].pos=i;
	}
	for(int i=0;i<n;i++){
		cin>>b[i].val;
		b[i].pos=i;
	}
	if(k==1){
		for(int i=0;i<n;i++){
			if(a[i].val!=b[i].val){
				cout<<"NO"<<'\n';
				return;
			}
		}
		cout<<"YES"<<'\n';
		return;
	}
	sort(a.begin(),a.end());
	sort(b.begin(),b.end());
	if(k==2){
		for(int i=0;i<n;i++){
			if(a[i].val!=b[i].val){
				cout<<"NO"<<'\n';
				return;
			}
		}
		cout<<"YES"<<'\n';
		return;
	}
	ll res=0;
	for(int i=0;i<n;i++){
		res+=a[i].pos-b[i].pos;
	}
	if(res==0){
		cout<<"YES"<<'\n';
	}else{
		cout<<"NO"<<'\n';
	}
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}